package com.photo.photogallery.photodetail; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; import com.photo.photogallery.PhotoGalleryApp; import com.photo.photogallery.R; import com.photo.photogallery.api.entities.Info; import com.photo.photogallery.api.entities.Photo; import com.photo.photogallery.network.AppImageLoader; import com.photo.photogallery.other.Utils; import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.Unbinder; public class PhotoFullDialog extends DialogFragment { @NonNull private static final String ARGUMENT_PHOTO = "PHOTO"; @NonNull private static final String ARGUMENT_INFO = "INFO"; private static Photo photo; private static Info info; @BindView(R.id.photo_full_image_view) ImageView photoFullImageView; @BindView(R.id.photo_full_owner_name_text_view) TextView ownerNameTextView; @BindView(R.id.photo_full_title_text_view) TextView titleTextView; @BindView(R.id.photo_full_comments_text_view) TextView commentsTextView; @BindView(R.id.photo_full_comment_image_view) ImageView commentImageView; @BindView(R.id.photo_full_comment_text_view) TextView commentTextView; @NonNull private Unbinder unbinder; @Inject AppImageLoader imageLoader; public PhotoFullDialog() { } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); PhotoGalleryApp.get(getContext()).applicationComponent().inject(this); } public static PhotoFullDialog newInstance(@NonNull Photo photo, @NonNull Info info) { Bundle arguments = new Bundle(); arguments.putParcelable(ARGUMENT_PHOTO, photo); arguments.putParcelable(ARGUMENT_INFO, info); PhotoFullDialog photoFullDialog = new PhotoFullDialog(); photoFullDialog.setArguments(arguments); return photoFullDialog; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.photo_full_screen, container); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); unbinder = ButterKnife.bind(this, view); photo = getArguments().getParcelable(ARGUMENT_PHOTO); info = getArguments().getParcelable(ARGUMENT_INFO); DisplayMetrics displayMetrics = Utils.getDisplayMetrics(getActivity()); imageLoader.downloadIntoAndResize(Utils.getImageUrl( photo, displayMetrics.widthPixels), photoFullImageView, 0, displayMetrics.heightPixels); ownerNameTextView.setText(photo.ownerName()); titleTextView.setText(photo.title()); if (info.photoInfo().comments().content() != null) { String nComments = String.format("%s %s", info.photoInfo().comments().content(), getString(R.string.comments)); commentsTextView.setText(nComments); commentTextView.setVisibility(View.VISIBLE); commentImageView.setVisibility(View.VISIBLE); } } @Override public void onResume() { ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes(); params.width = WindowManager.LayoutParams.MATCH_PARENT; params.height = WindowManager.LayoutParams.MATCH_PARENT; getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params); super.onResume(); } @Override public void onDismiss(DialogInterface dialog) { unbinder.unbind(); super.onDismiss(dialog); } @OnClick(R.id.photo_full_close_button) void onCloseButtonClick() { Dialog dialog = getDialog(); dialog.dismiss(); } }